package k2_oop.p3_finalAndStatic.demo04;

/**
 * 执行顺序
 *     父类的静态块 - 子类的静态块 - 父类的匿名块 -父类的构造方法 - 子类的匿名块 - 子类的构造方法
 */
public class Music {

    public static String name;
    public String author;

    public Music(){
        System.out.println("我是构造方法");
    }

    //静态块里的内容是在类加载的时候就执行，且仅执行一次
    //静态的内容只能使用静态的，不能使用对象级别的内容
    //一个类中可以存在多个静态块，按顺序执行，但是一般不建议有多个静态块
    static {
        System.out.println("我是静态块，类加载的时候仅执行一次");
    }

    //匿名块里的内容是在创建对象的时候执行，每个对象仅执行一次，最先执行的内容
    //可以有多个匿名块，按顺序执行，但是一般不建议有多个匿名块
    {
        System.out.println("我是匿名块，创建每个对象的时候仅执行一次");
    }


    public void song(){
        System.out.println("唱歌");
    }

}
